package com.sngamelib.topdownshooter;

import java.util.ArrayList;
import java.util.Date;

public class CycledGroup<_T> extends Group<_T> implements Cycleable
{
	private CycleTimer cycTimer;
		
	CycledGroup()
	{
		cycTimer = new CycleTimer();
	}
	
	CycledGroup(double _mgs)
	{
		super(_mgs);
		cycTimer = new CycleTimer();
	}
	
	CycledGroup(int _arSize)
	{
		super(_arSize);
		cycTimer = new CycleTimer();
	}
	
	CycledGroup(double _arSize, double _mgs)
	{
		super((int)_arSize, (int)_mgs);
		cycTimer = new CycleTimer();
	}

	CycledGroup(_T _t)
	{
		super(_t);
		cycTimer = new CycleTimer();
	}
	
	CycledGroup(_T _t, int _mgs)
	{
		super(_t, _mgs);
		cycTimer = new CycleTimer();
	}
	
	CycledGroup(ArrayList<_T> _il)
	{
		super(_il);
		cycTimer = new CycleTimer();
	}
	
	CycledGroup(ArrayList<_T> _il, int _mgs)
	{
		super(_il, _mgs);
		cycTimer = new CycleTimer();
	}
	
	CycledGroup(int _d, int _c)
	{
		cycTimer = new CycleTimer(_d, _c);
	}
	
	CycledGroup(int _d, int _c, Date _st)
	{
		cycTimer = new CycleTimer(_d, _c, _st);
	}
	
	
	CycledGroup(CycledGroup<_T> _cg)
	{
		int count = 0;
		while(count < _cg.getSize())
		{
			this.Add(_cg.Get(count));
			count++;
		}
		
		setMaxGroupSize(_cg.getMaxGroupSize());
	}
	
	CycledGroup(Group<_T> _g)
	{
		int count = 0;
		while (count < _g.getSize())
		{
			this.Add(_g.Get(count));
			count++;
		}
		
		setMaxGroupSize(_g.getMaxGroupSize());
	}
	
	public int getDuration()
	{
		return cycTimer.getDuration();
	}
	
	public int getCounter()
	{
		return cycTimer.getCounter();
	}
	
	public Date getStartTime()
	{
		return cycTimer.getStartTime();
	}
	
	public Date getTimeRemainingDate()
	{
		return cycTimer.getTimeRemainingDate();
	}
	
	public long getTimeRemainingLong()
	{
		return cycTimer.getTimeRemainingLong();
	}
	
	public int getTimeRemainingInt()
	{
		return cycTimer.getTimeRemainingInt();
	}
	
	public void setDuration(int _d)
	{
		cycTimer.setDuration(_d);
	}
	
	public void setCounter(int _c)
	{
		cycTimer.setCounter(_c);
	}
	
	public void setStartTime(Date _st)
	{
		cycTimer.setStartTime(_st);
	}

	@Override
	public void cycleWork()
	{
		// TODO Auto-generated method stub

	}

}
